// 2025/07/26
// Author: Forever
#include <bits/stdc++.h>
using namespace std;

struct node{
    int l, r, sum, lazy, len;
}t[800005];

void build(int p, int l, int r){
    t[p].sum = t[p].l = t[p].r = t[p].len = r - l + 1;
    t[p].lazy = 0;
    if (l == r)
        return;
    int m = (l + r) >> 1;
    build(p << 1, l, m);
    build((p << 1) | 1, m + 1, r);
}

void push_down(int p){
    if (t[p].lazy == 0)
        return;
    if (t[p].lazy == 1){
        t[p << 1].lazy = t[(p << 1) | 1].lazy = 1;
        t[p << 1].sum = t[p << 1].l = t[p << 1].r = 0;
        t[(p << 1) | 1].sum = t[(p << 1) | 1].l = t[(p << 1) | 1].r = 0;
    }
    else {
        t[p << 1].lazy = t[(p << 1) | 1].lazy = 2;
        t[p << 1].sum = t[p << 1].l = t[p << 1].r = t[p << 1].len;
        t[(p << 1) | 1].sum = t[(p << 1) | 1].l = t[(p << 1) | 1].r = t[(p << 1) | 1].len;
    }
    t[p].lazy = 0;
}

void update(int p, int l, int r, int x, int y, int v){
    push_down(p);
    if (x <= l && r <= y) {
        t[p].lazy = v;
        if (v == 1)
            t[p].sum = t[p].l = t[p].r = 0;
        else
            t[p].sum = t[p].l = t[p].r = r - l + 1;
        return;
    }
    int m = (l + r) >> 1;
    if (x <= m)
        update(p << 1, l, m, x, y, v);
    if (y > m)
        update((p << 1) | 1, m + 1, r, x, y, v);
    if (t[(p << 1)].l == t[(p << 1)].len)
        t[p].l = t[(p << 1)].l + t[(p << 1) | 1].l;
    else
        t[p].l = t[(p << 1)].l;
    if (t[(p << 1) | 1].r == t[(p << 1) | 1].len)
        t[p].r = t[(p << 1) | 1].r + t[(p << 1)].r;
    else
        t[p].r = t[(p << 1) | 1].r;
    t[p].sum = max({t[p << 1].sum, t[(p << 1) | 1].sum, t[p << 1].r + t[(p << 1) | 1].l});
}

int query(int p, int l, int r, int len){
    push_down(p);
    if (l == r)
        return l;
    int m = (l + r) >> 1;
    if (len <= t[p << 1].sum)
        return query(p << 1, l, m, len);
    if (len <= t[p << 1].r + t[(p << 1) | 1].l)
        return m - t[p << 1].r + 1;
    return query((p << 1) | 1, m + 1, r, len);
}

signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n, m;
    cin >> n >> m;
    build(1, 1, n);
    while (m--){
        int op, x, y;
        cin >> op;
        if (op == 1){
            cin >> x;
            if (x > t[1].sum)
                cout << 0 << endl;
            else{
                int t = query(1, 1, n, x);
                cout << t << endl;
                update(1, 1, n, t, t + x - 1, 1);
            }
        }
        else{
            cin >> x >> y;
            update(1, 1, n, x, x + y - 1, 2);
        }
    }
    return 0;
}